package com.xjx.controller; // 请确保包名与您的项目结构一致

import com.xjx.common.Result;
import com.xjx.pojo.User;
import com.xjx.service.ExceptionService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.BindingResult;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/test")
@Slf4j
public class TestController {

    @Autowired
    private ExceptionService exceptionService;


    @GetMapping("/{id}")
    public Result<String> getUserById(@PathVariable Integer id) {
        if (id == 0) {
            // 抛出异常后，方法就结束了
            exceptionService.triggerUnauthorizedError();
        } else if (id == 1) {
            // 抛出异常后，方法也结束了
            exceptionService.triggerSystemError();
        }else {
            int n = 1/0;
            return Result.ok("查询成功");
        }
        // 只有在 id 不是 0 或 1 时，才会执行到这里
        return Result.ok("查询成功");
    }
    /**
     * @param user          用户数据
     * @param bindingResult 校验结果对象 (必须紧跟在 @Validated 对象之后)
     * @return Result
     */
    @PostMapping("/user")
    public Result<?> addUser(@Validated @RequestBody User user, BindingResult bindingResult) {
        // 1. 手动检查校验结果是否存在错误
        if (bindingResult.hasErrors()) {
            // 2. 如果有错误，获取第一个错误的提示信息
            String errorMessage = bindingResult.getAllErrors().get(0).getDefaultMessage();
            // 3. 将错误信息包装成 Result 对象返回
            return Result.error(errorMessage);
        }

        // 4. 如果没有错误，执行正常的业务逻辑
        log.info("用户创建成功: {}", user.getUsername());
        return Result.ok(user);
    }
}